package com.eltsistemas.os.controller.veiculo;

import java.text.ParseException;

import javax.servlet.http.HttpServletRequest;

import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

import com.eltsistemas.hibernate.HibernateUtil;
import com.eltsistemas.os.dao.veiculo.FabricanteDao;
import com.eltsistemas.os.modelo.veiculo.Fabricante;

@Controller
@RequestMapping("/fabricante")
public class FabricanteController {
	
	@RequestMapping("/adiciona")
	public String adiciona(Fabricante fabricante)
	{
		Session session = new HibernateUtil().getSession();
		session.beginTransaction();
		
		FabricanteDao daoFabricante = new FabricanteDao(session);
		
		try
		{
			daoFabricante.adiciona(fabricante);
			session.close();
			return "redirect:lista";	
		}
		catch(Exception e)
		{
			return "redirect:lista?valor=true";
		}
	}
	
	@RequestMapping("/lista")
	public String lista(Model model, boolean valor)
	{
		Session session = new HibernateUtil().getSession();
		session.beginTransaction();
		
		FabricanteDao daoFabricante = new FabricanteDao(session);	
		model.addAttribute("fabricantes", daoFabricante.lista());
		
		session.close();
		return "fabricante";
	}
	
	@RequestMapping("/alterado")
	public String altera(Fabricante fabricante) throws ParseException
	{
		Session session = new HibernateUtil().getSession();
		session.beginTransaction();
		
		FabricanteDao daoFabricante = new FabricanteDao(session);
		try
		{
			daoFabricante.altera(fabricante);
			session.close();
			return "redirect:lista";
		}
		catch(Exception e)
		{
			return "redirect:lista?valor=true";
		}
	}
	
	
	@RequestMapping("/remover")
	public String remover(Fabricante fabricante)
	{
		Session session = new HibernateUtil().getSession();
		session.beginTransaction();

		try
		{
			FabricanteDao daoFabricante = new FabricanteDao(session);	
			daoFabricante.remover( fabricante );
			
			session.close();
			
			return "redirect:lista";
		}
		catch(HibernateException e)
		{
			return "redirect:lista?valor=true";
		}
	}

}
